const express = require('express')
const cors = require('cors')
const path = require('path')

const app = express()
const PORT = process.env.PORT || 3000

// 中间件
app.use(cors())
app.use(express.json())
app.use(express.static(path.join(__dirname, 'dist')))

// 模拟数据
const categories = [
  { id: 'ancient', name: '古代经典' },
  { id: 'modern', name: '近现代名家' },
  { id: 'contemporary', name: '当代新锐' }
]

const artworks = [
  {
    id: 1,
    title: '兰亭序',
    artist: '王羲之',
    dynasty: '东晋',
    style: '行书',
    category: 'ancient',
    description: '被誉为"天下第一行书"，是王羲之在兰亭雅集时所作，书法飘逸秀美，气韵生动。',
    background: '东晋永和九年（353年），王羲之与谢安、孙绰等四十一位军政高官在山阴兰亭会聚，饮酒赋诗，王羲之为此诗集作序。',
    features: '笔法飘逸秀美，气韵生动，章法自然，体现了王羲之书法艺术的最高成就。',
    image: 'https://img.dpm.org.cn/Uploads/Picture/2017/04/21/s58f9b14df3f14.jpg'
  },
  {
    id: 2,
    title: '祭侄文稿',
    artist: '颜真卿',
    dynasty: '唐代',
    style: '行书',
    category: 'ancient',
    description: '颜真卿为祭奠侄子颜季明所作，书法雄浑悲壮，被誉为"天下第二行书"。',
    background: '安史之乱时，颜真卿的侄子颜季明在抵抗叛军时被害，颜真卿悲愤交加写下此文。',
    features: '笔法雄浑，情感真挚，线条粗细变化丰富，体现了颜体行书的独特风格。',
    image: 'https://img.dpm.org.cn/Uploads/Picture/2017/04/21/s58f9b14df3f14.jpg'
  },
  {
    id: 3,
    title: '黄州寒食诗帖',
    artist: '苏轼',
    dynasty: '宋代',
    style: '行书',
    category: 'ancient',
    description: '苏轼被贬黄州时所作，书法自然流畅，情感真挚，体现了文人书法的独特韵味。',
    background: '苏轼被贬黄州第三年寒食节时所作，表达了对人生际遇的感慨。',
    features: '笔法自然，结构疏密有致，体现了文人书法的独特韵味。',
    image: 'https://img.dpm.org.cn/Uploads/Picture/2017/04/21/s58f9b14df3f14.jpg'
  },
  {
    id: 4,
    title: '自叙帖',
    artist: '怀素',
    dynasty: '唐代',
    style: '草书',
    category: 'ancient',
    description: '怀素的代表作之一，笔法狂放不羁，线条流畅如行云流水，展现了草书的极致之美。',
    background: '怀素在长安与文人雅士交往时所作，记录了自己学习草书的经历。',
    features: '笔法狂放，线条流畅如行云流水，展现了草书的极致之美。',
    image: 'https://img.dpm.org.cn/Uploads/Picture/2017/04/21/s58f9b14df3f14.jpg'
  },
  {
    id: 5,
    title: '急就章',
    artist: '宋克',
    dynasty: '明代',
    style: '章草',
    category: 'ancient',
    description: '明代书法家宋克的章草代表作，笔法古朴，结构严谨，体现了章草的独特韵味。',
    background: '明代书法家宋克的章草代表作，体现了章草的独特韵味。',
    features: '笔法古朴，结构严谨，体现了章草的独特韵味。',
    image: 'https://img.dpm.org.cn/Uploads/Picture/2017/04/21/s58f9b14df3f14.jpg'
  },
  {
    id: 6,
    title: '毛泽东诗词',
    artist: '毛泽东',
    dynasty: '现代',
    style: '草书',
    category: 'modern',
    description: '毛泽东的书法作品，气势磅礴，笔力雄健，体现了革命家的豪迈气概。',
    background: '毛泽东的书法作品，体现了革命家的豪迈气概。',
    features: '气势磅礴，笔力雄健，体现了革命家的豪迈气概。',
    image: 'https://img.dpm.org.cn/Uploads/Picture/2017/04/21/s58f9b14df3f14.jpg'
  }
]

// API路由

// 获取所有分类
app.get('/api/categories', (req, res) => {
  res.json({
    code: 200,
    message: 'success',
    data: categories
  })
})

// 获取所有作品
app.get('/api/artworks', (req, res) => {
  const { category } = req.query
  let result = artworks
  
  if (category && category !== 'all') {
    result = artworks.filter(artwork => artwork.category === category)
  }
  
  res.json({
    code: 200,
    message: 'success',
    data: result
  })
})

// 根据ID获取作品
app.get('/api/artworks/:id', (req, res) => {
  const id = parseInt(req.params.id)
  const artwork = artworks.find(item => item.id === id)
  
  if (artwork) {
    res.json({
      code: 200,
      message: 'success',
      data: artwork
    })
  } else {
    res.status(404).json({
      code: 404,
      message: '作品未找到',
      data: null
    })
  }
})

// 搜索作品
app.get('/api/artworks/search', (req, res) => {
  const { keyword } = req.query
  let result = artworks
  
  if (keyword) {
    const lowerKeyword = keyword.toLowerCase()
    result = artworks.filter(artwork => 
      artwork.title.toLowerCase().includes(lowerKeyword) ||
      artwork.artist.toLowerCase().includes(lowerKeyword) ||
      artwork.description.toLowerCase().includes(lowerKeyword)
    )
  }
  
  res.json({
    code: 200,
    message: 'success',
    data: result
  })
})

// 处理 SPA 路由
app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, 'dist/index.html'))
})

app.get('/exhibition', (req, res) => {
  res.sendFile(path.join(__dirname, 'dist/index.html'))
})

app.get('/exhibition/:id', (req, res) => {
  res.sendFile(path.join(__dirname, 'dist/index.html'))
})

app.get('/gallery', (req, res) => {
  res.sendFile(path.join(__dirname, 'dist/index.html'))
})

app.get('/about', (req, res) => {
  res.sendFile(path.join(__dirname, 'dist/index.html'))
})

// 启动服务器
app.listen(PORT, () => {
  console.log(`服务器运行在端口 ${PORT}`)
  console.log(`API接口地址: http://localhost:${PORT}/api`)
})